package com.hyfd.service.mp;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.apache.shiro.session.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.github.pagehelper.PageHelper;
import com.hyfd.common.BaseJson;
import com.hyfd.common.GenerateData;
import com.hyfd.common.GlobalSetHyfd;
import com.hyfd.common.Page;
import com.hyfd.dao.mp.DataPkgDao;
import com.hyfd.dao.mp.ProviderDataDiscountDao;
import com.hyfd.service.BaseService;


@Service
@Transactional
public class DataPkgSer extends BaseService{
	
	public Logger log = Logger.getLogger(this.getClass());
	
	@Autowired
	DataPkgDao dataPkgDao;
	@Autowired
	ProviderDataDiscountDao providerDataDiscountDao;
	
	public int getDataPkgCount(Map<String, Object> m){
		int providerCount=0;
		try{
			providerCount=dataPkgDao.getDataPkgCount(m);
		}catch(Exception e){
			getMyLog(e,log);
		}
		return providerCount;
	}
	
	public String dataPkgList(HttpServletRequest req){
		StringBuilder sb=new StringBuilder();
		try{
			Map<String, Object> m=getMaps(req); //封装前台参数为map
			Page p=getPage(m);//提取分页参数
			int total=getDataPkgCount(m);
			p.setCount(total);
			int pageNum=p.getCurrentPage();
			int pageSize=p.getPageSize();
			
			sb.append("{");
			sb.append(""+getKey("page")+":"+p.getCurrentPage()+",");
			sb.append(""+getKey("total")+":"+p.getNumCount()+",");
			sb.append(""+getKey("records")+":"+p.getCount()+",");
			sb.append(""+getKey("rows")+":"+"");
			
			PageHelper.startPage(pageNum, pageSize);//mybatis分页插件
			List<Map<String, Object>> dataList=dataPkgDao.getDataPkgList(m);
			String dataListJson=BaseJson.listToJson(dataList);
			sb.append(dataListJson);
			sb.append("}");
		}catch(Exception e){
			getMyLog(e,log);
		}
		
		return sb.toString();
	}
	
	public String dataListGet(HttpServletRequest req){
		StringBuilder sb=new StringBuilder();
		try{
			Map<String, Object> m=new HashMap<String, Object>();
			Map<String, Object> maps = getMaps(req);
			String dataType = (String) maps.get("dataType");
			if(dataType!=null){
				m.put("dataType", dataType);
			}
			List<Map<String, Object>> dataList=dataPkgDao.getDataPkgList(m);
			String dataListJson=BaseJson.listToJson(dataList);
			sb.append(dataListJson);
		}catch(Exception e){
			getMyLog(e,log);
		}
		
		return sb.toString();
	}
	
	public String dataListGetByProId(String id,String type){
		StringBuilder sb=new StringBuilder();
		try{
			Map<String, Object> m=new HashMap<String, Object>();
			m.put("providerId", id);
			m.put("type",type);
			List<Map<String, Object>> dataList=dataPkgDao.getDataPkgByProId(m);
			String dataListJson=BaseJson.listToJson(dataList);
			sb.append(dataListJson);
		}catch(Exception e){
			getMyLog(e,log);
		}		
		return sb.toString();
	}

	/**
	 * <h5>功能描述:</h5>	新增流量包
	 *
	 * @param req
	 * @param provinceCodeList
	 * @return
	 *
	 * @作者：zhangpj		@创建时间：2017年3月6日
	 */
	public String dataPkgAdd(HttpServletRequest req){
		boolean flag=false;
		try{
			Map<String, Object> myData=getMaps(req);

			Map<String, Object> userInfoMap=getUser(); //取到当前用户信息
			myData.put("createUser", userInfoMap.get("suId"));//放入创建用户
			
			// 新增流量包和运营商流量包
			flag = insertDataPkg(myData);
			
			Session session=getSession();
			session.setAttribute(GlobalSetHyfd.backMsg, flag?"添加成功":"添加失败");
		}catch(Exception e){
			getMyLog(e,log);
		}
		return "redirect:/dataPkgListPage";		
	}

	/**
	 * <h5>功能描述:</h5>	新增流量包
	 *
	 * @param userInfoMap
	 * @return boolean 返回新增是否成功
	 *
	 * @作者：zhangpj		@创建时间：2017年3月2日
	 */
	private boolean insertDataPkg(Map<String, Object> myData) {
		boolean flag = false;
		// 生成流量卡包id
		String dataPkgId= GenerateData.getUUID();
		myData.put("id", dataPkgId);
		
		// 流量类型
		String dataType = myData.get("provinceCode").toString();
		myData.put("dataType", dataType);
		
		// 新增流量包
		int rows=dataPkgDao.dataPkgAdd(myData);
		if(rows>0){
			flag=true;
		}
		return flag;
	}
	
	public String dataPkgEditPage(String id){
		try{
			//查询话费包
			Map<String, Object> dataPkg=getDataPkgById(id);
			Session session=getSession();
			session.setAttribute("dataPkg", dataPkg);
		}catch(Exception e){
			getMyLog(e,log);
		}
		return "mp/dataPkgEdit";
	}
	
	public Map<String, Object> getDataPkgById(String id) {
		Map<String, Object> m=new HashMap<String, Object>();
		try{
			m=dataPkgDao.getDataPkgById(id);
		}catch(Exception e){
			getMyLog(e,log);
		}
		return m;
	}
	
	/**
	 * <h5>功能描述:</h5>	编辑流量包
	 *
	 * @param req
	 * @param id
	 * @return
	 *
	 * @作者：zhangpj		@创建时间：2017年3月3日
	 */
	public String dataPkgEdit(HttpServletRequest req,String id,String[] provinceCodeList){
		
		try{
			boolean flag=false;
			Map<String, Object> myData=getMaps(req);
			
			Map<String, Object> userInfoMap=getUser(); //取到当前用户信息
			myData.put("updateUser", userInfoMap.get("suId"));//放入创建用户
			
			// 1.修改流量包
			int rows=dataPkgDao.dataPkgEdit(myData);
			if(rows>0){
				String dataPkgId = myData.get("id").toString();
				myData.put("dataPkgId", dataPkgId);
				
				// 4.修改运营商流量包里面的流量包名称
				providerDataDiscountDao.updateNameByDataPkgId(myData);
				if (rows > 0) {
					flag=true;
				}
			}
			Session session=getSession();
			session.setAttribute(GlobalSetHyfd.backMsg, flag?"修改成功":"修改失败");
		}catch(Exception e){
			getMyLog(e,log);
		}
		return "dataPkgListPage";	
	}

	public String dataPkgDel(String id){
		
		try{
		boolean flag=false;
		int rows=dataPkgDao.dataPkgDel(id);
		
		if(rows>0){
			flag=true;
		}
		
		Session session=getSession();
		session.setAttribute(GlobalSetHyfd.backMsg, flag?"删除成功":"删除失败");
		
		}catch(Exception e){
			getMyLog(e,log);
		}
		return "dataPkgListPage";		
	}
}
